home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE19 / SURVIVE / SETUP.SQL < prev    next >
Encoding:
Text File  |  1997-01-19  |  3.0 KB  |  125 lines

  1. drop table Users
  2. go
  3.  
  4. create table Users(
  5.   UserID                  int       not null identity,          
  6.   Username                char(30)  not null,     
  7.   FirstName               char(20)  not null default '',     
  8.   LastName                char(20)  not null default '',     
  9.   DateLastLogin           datetime  null,     
  10.   DateLastPasswordChange  datetime  null,     
  11.   PasswordLifespan        smallint  null,
  12. )
  13. GO
  14. grant all on Users to Public
  15. GO
  16.  
  17.  
  18. drop table AdminConfig
  19. go
  20.  
  21. create table AdminConfig(
  22.   PasswordLifespan        smallint null,
  23.   MustChangeNewPassword   char(1) not null default 'N'
  24.     check (MustChangeNewPassword in ('Y', 'N'))
  25. )
  26. GO
  27. grant all on AdminConfig to Public
  28. GO
  29. insert AdminConfig (MustChangeNewPassword) values ('N')
  30. go
  31.  
  32.  
  33. drop procedure AddUser
  34. go
  35. create procedure AddUser(
  36.   @Username   varchar(30),
  37.   @Password   varchar(30),
  38.   @FirstName  varchar(20),
  39.   @LastName   varchar(20),
  40.   @PasswordLifespan smallint,
  41.   @PasswordMustChange char(1) /* Y/N */
  42. )
  43. as
  44.   declare @Result integer
  45.   declare @DateLastPasswordChange datetime
  46. begin
  47.   /* add a server login */
  48.   execute @Result = sp_addlogin @Username, @Password
  49.   if @Result = 0 
  50.   begin
  51.     /* add the user to our database */
  52.     execute @Result = sp_adduser @Username
  53.     if @Result <> 0
  54.     begin
  55.       execute sp_droplogin @Username
  56.       return
  57.     end
  58.  
  59.     if @PasswordLifespan <= 0 
  60.       select @PasswordLifespan = null
  61.  
  62.     if Upper(@PasswordMustChange) = 'Y' 
  63.       select @DateLastPasswordChange = null
  64.     else
  65.       select @DateLastPasswordChange = GetDate()
  66.  
  67.     /* build a record for the supplementary user table */  
  68.     insert Users(Username, FirstName, LastName, 
  69.                  PasswordLifespan, DateLastPasswordChange)
  70.       values (@Username, @FirstName, @LastName, 
  71.               @PasswordLifespan, @DateLastPasswordChange)
  72.  
  73.     /* if an error, then remove the user from the system */
  74.     if @@error <> 0
  75.     begin
  76.       execute sp_dropuser @Username
  77.       execute sp_droplogin @Username
  78.     end
  79.   end
  80. end
  81. go
  82.  
  83. drop procedure EditUser
  84. go
  85. create procedure EditUser(
  86.   @Username   varchar(30),
  87.   @Password   varchar(30),
  88.   @FirstName  varchar(20),
  89.   @LastName   varchar(20),
  90.   @PasswordLifespan smallint,
  91.   @PasswordMustChange char(1) /* Y/N */
  92. )
  93. as
  94.   declare @Result integer
  95.   declare @DateLastPasswordChange datetime
  96. begin
  97.   if @Password <> '' 
  98.   begin
  99.     execute @Result = sp_password null, @Password, @Username
  100.     if @Result <> 0 
  101.     begin
  102.       raiserror 50001 "Could not change user password"
  103.       return
  104.     end
  105.   end
  106.  
  107.   if @PasswordLifespan <= 0 
  108.     select @PasswordLifespan = null
  109.  
  110.   if Upper(@PasswordMustChange) = 'Y' 
  111.     select @DateLastPasswordChange = null
  112.   else
  113.     select @DateLastPasswordChange = GetDate()
  114.  
  115.   /* change the Users record */
  116.   update Users set
  117.     FirstName = @FirstName,
  118.     LastName = @LastName,
  119.     PasswordLifespan = @PasswordLifespan,
  120.     DateLastPasswordChange = @DateLastPasswordChange
  121.     where Username = @Username
  122. end
  123. go
  124.  
  125.